main(){
  // 1.创建对象
  //Dart当中创建对象的时候可以省略new关键字
  //简写一对应的用法
  // Person p =  Person("张三",18,"男");
  // 简写二对应的用法
  Person p =  Person(name:"张三",age:18,sex:"男");
 print(p.name);
 print(p.age);
 print(p.sex);
  p.sayHello();
  // 2.4 使用命名构造函数创建对象
  //简写方法一对应的写法
  // Person man = Person.man(name:"李四",age:25,sex:"女");
  //简写方法二对应的写法
  Person man = Person.man(name:"李四",age:25);
  print(man.name);
  print(man.age);
  print(man.sex);
  man.sayHello();
}
// 2.定义类
class Person{
  // 2.1属性
  String? name;
  int? age;
  String? sex;
  // 主构造函数
  // Person({String? name,int? age,String? sex}){
  //   this.name = name;
  //   this.age = age;
  //   this.sex = sex;
  // }
     /**
      * 主构造函数简写
      */ 
      // 1.简写方法一
  // Person(this.name,this.age,this.sex);
      // 2.简写方法二
      Person({this.name,this.age,this.sex});
  /**
   * 2.3 命名构造函数
   * 可以有多个命名构造函数
   */ 
  // Person.man({String? name,int? age}){
  //   this.name = name;
  //   this.age = age;
  //   this.sex = "男";
  // }
  /**
   * 次构造函数
   */
  //简写方法一，可以修改：sex
  // Person.man({this.name,this.age,this.sex="男"});
  // 简写方法二,不可以修改sex
  Person.man({this.name,this.age}) : sex="男";
  
  // 2.2方法
  void sayHello(){
    print("你好，我是：$name，我今年：$age岁，性别：$sex");
  }
}